Jag har ett arraystatistiknamn som äpple X banan Y Kiwi z Jag måste lägga äpple, banan och kiwi i en matris Frukt och X, Y och Z i en grupp som kallas alfabet. Någon enkel C # -mekanism för det tack?
Använd IEnumerable. Överbelastning som levererar indexet. var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var alfabet = statsnamn. var ((s, i) => i% 2! = 0). ToArray (); | Stulen från hur man får alternativa element med hjälp av Enumerable in C # var frukter = myArray.Where ((t, i) => i% 2 == 0) .ToArray (); var alfabet = myArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Om jag har förstått ifrågasätter du rätt vad du vill är väldigt enkelt: Du vill placera frukter i en mängd olika frukter och samma för alfabet och de visas alternativt i matrisstatistiknamn så: för (int i = 0, j = 0; i lista = ny lista () {"äpple", "X", "banan", "Y", "Kiwi", "z"}; var resultat = lista. Välj ((l, i) => ny {l, i}) .GroupBy (p => p.i% 2) .Välj (x => x.Select (v => v.l) .ToList ()) .Att lista(); Då har du en lista med listor: | lista frukter = ny lista (); lista alfabetet = ny lista (); för (int i = 0; i everyOther (IEnumerable collection) { använder (var e = collection.GetEnumerator ()) { medan (e.MoveNext ()) { avkastningsavkastning e.Current; e.MoveNext (); // hoppa över en } } } Du kan använda System.Linq.Skip för att hoppa över det första elementet. string [] words = "apple X banana Y Kiwi z" .Split (); var frukter = alla andra (ord); var alfabet = alla andra (ord.Skipp (1)); Använd dem bara som en ny samling eller ring .ToArray () eller .ToList () på dem: foreach (sträng f i frukt) Console.WriteLine (f); sträng [] anArray = fruits.ToArray (); // med System.Linq Nu har du vad du behöver. Iteratorer är metoder som ger avkastning, se Iteratorer (C # Programmeringsguide). Detta är ett mycket starkt inslag i språket. Du kan: hoppa över element dekorera element ändra beställning sammanfoga sekvenser (se System.Linq.Concat) ... | Här är en arbetskod, förhoppningsvis kommer det att vara till hjälp för dig: använder System; använder System.Collections.Generic; använder System.IO; med System.Linq; använder System.Text; använder System.Threading.Tasks; namnrymd ReadFile { klassprogram { statisk ogiltig ReadFile (strängfilPath, List custumerNames, List phoneNumbers) { string line = string.Empty; var fileStream = ny StreamReader (filePath); bool isPhoneNumber = true; medan ((line = fileStream.ReadLine ())! = null) { if (isPhoneNumber) { phoneNumbers.Add (Convert.ToInt32 (line)); isPhoneNumber = falskt; } annan { custumerNames.Add (rad); isPhoneNumber = true; } } fileStream.Close (); } static void Main (sträng [] args) { Console.WriteLine ("Började läsa filen ..."); Lista custumersNamesList = ny lista (); Lista custumersPhonesNumbers = ny lista (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // Förutsatt att båda listorna har samma längd. för (int i = 0; i